<?php
class UsersController extends AppController {
		
    public $name = 'Users';
    
    public function beforeFilter() {
		Security::setHash('md5');
		
		if ($this->action!='login')		
    		parent::beforeFilter();
    }
    
    public function login() {
    	
    	$this->data['User']['password']=md5($_REQUEST['data']['User']['password']);
    	
    	$this->Auth->login($this->data);
    	    	
		if ($this->Auth->user('id'))
			{
			$this->retorno->success=true;
			$this->retorno->id=$this->Auth->user('id');
			}
			else
			{   	  	
			$this->retorno->success=false;
			}
			
		$this->set('retorno', json_encode($this->retorno));
    }

    public function index() {
    	$retorno->success=true;
    		
		$sort=(isset($_REQUEST['sort']))? $_REQUEST['sort'] : 'User.name';
    	$dir=(isset($_REQUEST['dir']))? $_REQUEST['dir'] : 'ASC';
    	$start=(isset($_REQUEST['start']))? $_REQUEST['start'] : 0;
    	$limit=(isset($_REQUEST['limit']))? $_REQUEST['limit'] : 999999999999;

    	$parametros=array(
    		'order'=>$sort." ".$dir,
    		'offset'=>$start,
    		'limit'=>$limit
    	);
    	    	
    	$users=$this->User->find('all', $parametros);
    	$usersTotal=$this->User->find('count');
    	
    	$retorno->total=$usersTotal;
    	$retorno->data=Array();
    	
    	foreach ($users as $user) {
    		$user['User']['password']="";
    		$user['User']['group_name']=$user['Group']['name'];
    		array_push($retorno->data, $user['User']);
    	}
    	
    	$this->set('retorno', json_encode($retorno));
    }
    
    public function add() {
    	try
    	{
    		$this->User->create();
    		
    		$this->data->password=md5($this->data->password);
    		
	    	if (!$this->User->save($this->data))
	    		throw new Exception("Não foi possível salvar User!");
	    		
	    	$this->retorno->success=true;
	    	$this->retorno->id=$this->User->getInsertID();
	    	$this->retorno->message="User salvo com sucesso!";
    	} 
    	catch (Exception $e) {
    		$this->retorno->success=false;
	    	$this->retorno->message=$e->getMessage();
    	}
    	
    	$this->set('retorno', json_encode($this->retorno));
    }
    
    public function edit($id) {
    	try
    	{
    		$obj=$this->User->findById($id);
    		    		
    		$password=md5($this->data->password);
    		
    		if ($this->data->password!="" && $obj['User']['password']!=$password)
    			$this->data->password=$password;
    			else
    			$this->data->password=$obj['User']['password'];
    		
	    	if (!$this->User->save($this->data))
	    		throw new Exception("Não foi possível editar User!");
	    		
	    	$this->retorno->success=true;
	    	$this->retorno->message="User salvo com sucesso!";
    	} 
    	catch (Exception $e) {
    		$this->retorno->success=false;
	    	$this->retorno->message=$e->getMessage();
    	}
    	
    	$this->set('retorno', json_encode($this->retorno));
    }
    
	public function delete($id) {
    	try
    	{
    		$this->User->delete($id);
	    		    		
	    	$this->retorno->success=true;
	    	$this->retorno->message="User deletado com sucesso!";
    	} 
    	catch (Exception $e) {
    		$this->retorno->success=false;
	    	$this->retorno->message=$e->getMessage();
    	}
    	
    	$this->set('retorno', json_encode($this->retorno));
    }
    
	public function view($id) {
    	try
    	{
	    	$this->retorno->success=true;
    	} 
    	catch (Exception $e) {
    		$this->retorno->success=false;
	    	$this->retorno->message=$e->getMessage();
    	}
    	
    	$this->set('retorno', json_encode($this->retorno));
    }
}	
?>
